//============================================================================================
/**
 * @file	pair_poke_data.c
 * @brief	連れ歩き関連アクセス用ソース
 * @author	saito GAME FREAK inc.
 * @date	2007.06.26
 */
//============================================================================================

#include "common.h"
#include "savedata/savedata.h"
#include "savedata/pair_poke_data.h"

//連れ歩きポケモンデータ
typedef struct PAIR_POKE_SV_DATA_tag{
	int OldZoneID;			//ゾーンＩＤ
	int Follow:2;			//連れ歩き状態	連れ歩いている｜連れ歩いていない｜連れ歩いているけど消している <<この変数は未使用
	int Forbidden:1;		//出現禁止フラグ
	int Dummy:29;
}PAIR_POKE_SV_DATA;

//----------------------------------------------------------
/**
 * @brief	連れ歩き関連セーブデータサイズ取得
 *
 * @return	int		PAIR_POKE_SV_DATAのサイズ
 */
//----------------------------------------------------------
int PairPokeDataSave_GetWorkSize(void)
{
	return sizeof(PAIR_POKE_SV_DATA);
}

//----------------------------------------------------------
/**
 * @brief	連れ歩き関連セーブデータの初期化
 *
 * @param	outData		連れ歩き関連セーブデータへのポインタ
 *
 * @return	none
 */
//----------------------------------------------------------
void PairPokeDataSave_InitSaveData(PAIR_POKE_SV_PTR outData)
{
	memset( outData, 0, sizeof(PAIR_POKE_SV_DATA) );

	//旧ゾーンＩＤ初期化
	outData->OldZoneID = 0;
}

//==============================================================================
/**
 * セーブデータ先頭ポインタ取得
 *
 * @param	sv		セーブポインタ
 *
 * @return	PAIR_POKE_SV_PTR		データポインタ
 */
//==============================================================================
PAIR_POKE_SV_PTR PairPokeDataSave_GetSaveDataPtr(SAVEDATA * sv)
{
	return SaveData_Get(sv, GMDATA_ID_PAIR_POKE);
}

//----------------------------------------------------------
/**
 * @brief	旧ゾーンＩＤセット
 *
 * @param	inZoneID	ゾーンＩＤ
 * @param	outData		連れ歩き関連セーブデータへのポインタ
 *
 * @return	none
 */
//----------------------------------------------------------
void PairPokeDataSave_SetOldZone(const int inZoneID, PAIR_POKE_SV_PTR outData)
{
	outData->OldZoneID = inZoneID;
}

//----------------------------------------------------------
/**
 * @brief	旧ゾーンＩＤ取得
 *
 * @param	inData		連れ歩き関連セーブデータへのポインタ
 *
 * @return	int			ゾーンＩＤ
 */
//----------------------------------------------------------
int PairPokeDataSave_GetOldZone(PAIR_POKE_SV_PTR inData)
{
	return inData->OldZoneID;
}

//----------------------------------------------------------
/**
 * @brief	連れ歩き状態セット
 *
 * @param	inFollow	連れ歩きタイプ
 * @param	outData		連れ歩き関連セーブデータへのポインタ
 *
 * @return	none
 */
//----------------------------------------------------------
void PairPokeDataSave_SetFollow(const PAIR_FOLLOW_TYPE inFollow, PAIR_POKE_SV_PTR outData)
{
	outData->Follow = inFollow;
}


//----------------------------------------------------------
/**
 * @brief	連れ歩き状態取得
 *
 * @param	inData		連れ歩き関連セーブデータへのポインタ
 *
 * @return	int			ゾーンＩＤ
 */
//----------------------------------------------------------
PAIR_FOLLOW_TYPE PairPokeDataSave_GetFollow(PAIR_POKE_SV_PTR inData)
{
	return inData->Follow;
}

//----------------------------------------------------------
/**
 * @brief	連れ歩き出現禁止フラグセット
 *
 * @param	outData		連れ歩き関連セーブデータへのポインタ
 * @param	inFlg		0以外:禁止
 *
 * @return	none
 */
//----------------------------------------------------------
void PairPokeDataSave_SetForbidden(PAIR_POKE_SV_PTR outData, const u8 inFlg)
{
	outData->Forbidden = inFlg;
}


//----------------------------------------------------------
/**
 * @brief	連れ歩き出現禁止フラグ取得
 *
 * @param	inData		連れ歩き関連セーブデータへのポインタ
 *
 * @return	u8 			0以外:禁止
 */
//----------------------------------------------------------
u8 PairPokeDataSave_GetForbidden(PAIR_POKE_SV_PTR inData)
{
	return inData->Forbidden;
}






